/** @type {Object} 弹窗提示 */
import Util from './util.js'
import {
  MessageBox
} from 'element-ui'

const box = {
  /** 内部获取参数方法 */
  _getOptions: function(title, options, _config) {
    var _options = {};
    if (Util.isObject(title)) {
      _options = title;
    } else {
      _options = Util.isObject(options) ? options : {};
    }
    return Object.assign({}, {
      duration: 2000,
      showClose: false
    }, _config, _options);
  },
  /** 内部获取标题方法 */
  _getTitle: function(title) {
    return Util.isString(title) ? title : '';
  },
  /**
   * 成功弹窗
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-15
   * @param    {msg}      msg     提示信息
   * @param    {title}    title   标题或options参数
   * @param    {options}  options 参数
   */
  success: function(msg, title, options) {
    return MessageBox.alert(msg, this._getTitle(title), this._getOptions(title, options, {
      type: 'success'
    }));
  },
  /**
   * 失败弹窗
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-15
   * @param    {msg}      msg     提示信息
   * @param    {title}    title   标题或options参数
   * @param    {options}  options 参数
   */
  error: function(msg, title, options) {
    return MessageBox.alert(msg, this._getTitle(title), this._getOptions(title, options, {
      type: 'error'
    }));
  },
  /**
   * 询问弹窗
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-15
   * @param    {msg}      msg     提示信息
   * @param    {title}    title   标题或options参数
   * @param    {options}  options 参数
   */
  confirm: function(msg, title, options) {
    return MessageBox.confirm(msg, this._getTitle(title), this._getOptions(title, options, {
      type: 'warning'
    }));
  },
  /**
   * 弹出式输入框
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-15
   * @param    {msg}      msg     提示信息
   * @param    {title}    title   标题或options参数
   * @param    {options}  options 参数
   */
  prompt: function(msg, title, options) {
    return MessageBox.prompt(msg, this._getTitle(title), this._getOptions(title, options, {}));
  }
}

export default box
